package com.yunnuo.system.comm.service;
import com.yunnuo.system.comm.entity.IdEntity;
import org.hibernate.service.spi.ServiceException;

import java.util.List;

/**
 * 业务管理服务接口，定义了管理相关服务接口的公共方法。
 *
 * @author Created by w_weihf on 2018/7/20.
 * @description @param <T> 业务主要实体类范型
 */
public interface IBaseService<T extends IdEntity> {

    /**
     * 新增信息
     *
     * @param vo
     * @throws ServiceException
     */
    public void addVO(T vo) throws ServiceException;

    /**
     * 更新信息
     *
     * @param vo
     * @throws ServiceException
     */
    public void updateVO(T vo) throws ServiceException;

    /**
     * 根据ID批量删除对象
     *
     * @param ids
     *            需要删除的ID
     * @return 被删除的对象集合
     * @throws ServiceException
     */
    public void delList(String[] ids) throws ServiceException;

    /**
     * 根据ID删除对象
     *
     * @param id
     *            需要删除的ID
     * @return 被删除的对象集合
     * @throws ServiceException
     */
    public void deleteVo(String id) throws ServiceException;

    /**
     * 查询全部对象
     * @return 集合
     * @throws ServiceException
     */
    public List<T> findList() throws ServiceException;

    /**
     * 根据对象或其他查询条件进行查询
     * @param vo
     * @param other
     * @return
     * @throws ServiceException
     */
    public List<?> findList(T vo,String other) throws ServiceException;

    /**
     * 根据ID查询信息
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    public T findVO(String id) throws ServiceException;

}